'''
@Project ：my_python_project 
@File    ：test1.py
@IDE     ：PyCharm 
@Author  ：xionglinhui
@Date    ：2024/8/7 上午8:06 
'''
# 1. 命名关键字参数（了解）
#  命名关键字参数：在定义函数时，*后定义的参数，如下所示，称之为命名关键字参数
# 特点：
# 1、命名关键字实参必须按照key=value的形式为其传值
# def func(x,y,*,a,b): # 其中，a和b称之为命名关键字参数
#     print(x,y)  # 1 2
#     print(a,b)
#
# func(1,2,b=222,a=111)  # 111 222
#
# # 示例：命名关键字参数中，其中位置参数与默认参数位置的前后顺序无需关注，不影响
# def func(x,y,*,a=11111,b):
#     print(x,y)   # 1 2
#     print(a,b)
#
# func(1,2,b=22222)  # 11111 22222


# 2. 组合使用（了解）
# 形参混用的顺序：位置新参，默认形参,*args,命名关键字形参，**kwargs
# def func(x,y=111,*args,z,**kwargs):
#     print(x)
#     print(y)
#     print(args)
#     print(z)
#     print(kwargs)





# 实参混用的顺序：
def func(x,y,z,a,b,c):
    print(x)
    print(y)
    print(z)
    print(a)
    print(b)
    print(c)

# func(111,y=222,*[333,444],**{'b':555,'c':666})
#先打散 ==>func(111, y=222, 333, 444, b=555, c=666)  位置实参在默认实参前，报错


func(111,*[333,444],a=222,**{'b':555,'c':666})
# 先打散 ==> func(111,333,444,a=222,b=555,c=66)

func(111,*[333,444],**{'b':555,'c':666},a=222,)
# 先打散 ==> func(111,3333,4444,b=555,c=666,a=222)